package com.aura.springbook.service;

import com.aura.springbook.model.BorrowRecord;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 借阅记录服务接口
 * 
 * 继承MyBatis-Plus的IService，提供基本的CRUD操作
 * 同时定义了一些自定义的业务方法
 * 
 * 提供以下功能：
 * 1. 基本的增删改查操作（继承自IService）
 * 2. 借阅图书
 * 3. 归还图书
 * 4. 分页查询用户的借阅记录
 * 5. 根据ID获取借阅记录详情
 */
public interface BorrowRecordService extends IService<BorrowRecord> {
    
    /**
     * 借阅图书
     * 
     * 用户借阅指定图书，创建借阅记录并减少图书库存
     * 
     * @param userId 用户ID
     * @param bookId 图书ID
     * @return 借阅记录ID
     */
    Long borrowBook(Long userId, Long bookId);
    
    /**
     * 归还图书
     * 
     * 用户归还图书，更新借阅记录状态并增加图书库存
     * 
     * @param recordId 借阅记录ID
     * @return 是否归还成功
     */
    boolean returnBook(Long recordId);
    
    /**
     * 分页查询用户的借阅记录
     * 
     * 分页查询指定用户的所有借阅记录
     * 
     * @param userId 用户ID
     * @param current 当前页
     * @param size 每页大小
     * @return 借阅记录分页数据
     */
    IPage<BorrowRecord> getBorrowRecordsByUser(Long userId, int current, int size);
    
    /**
     * 根据ID获取借阅记录详情
     * 
     * 根据借阅记录ID查询详细信息
     * 
     * @param id 借阅记录ID
     * @return 借阅记录详情
     */
    BorrowRecord getBorrowRecordDetail(Long id);
}